<?php

require_once '../db/Conexion.php';
require_once '../db/Configuraciones.php';

$tipoListado = "BLEU";

//gestiona la accion solicitada 
function accion_controller() {
    $accion = FALSE;
    $bleuSpecific_peticion = helper_data();
    $accion = $bleuSpecific_peticion['accion'];
    if ($accion) {
        switch ($accion) {

            case 'save' :
                guardar($bleuSpecific_peticion);
                break;
            case 'delete' :
                eliminar($bleuSpecific_peticion['id']);
                break;
            case 'list' :
                listar();
                break;
            case 'bleuSpecificByPersona' :
                bleuSpecificByPersona($bleuSpecific_peticion['id']);
                break;

            case 'edit' :
                editar($bleuSpecific_peticion['id']);
                break;
        }
    } else {
        die("ERROR: No se recibieron los parametros correspondientes.");
    }
}

//OBTIENE LOS DATOS DE POST
function helper_data() {
    global $tipoListado;
    $bleuSpecific = array();

    if (isset($_POST['id']))
        $bleuSpecific['id'] = $_POST['id'];

    if (isset($_POST['persona_id']))
        $bleuSpecific['persona_id'] = $_POST['persona_id'];
    //codigo
    if (isset($_POST['bleu_codigo_id']))
        $bleuSpecific['bleu_codigo_id'] = $_POST['bleu_codigo_id'];
    if (isset($_POST['bleu_codigo']))
        $bleuSpecific['bleu_codigo'] = $_POST['bleu_codigo'];
    
    if (isset($_POST['persona_id']))
        $bleuSpecific['persona_id'] = $_POST['persona_id'];
    
    $administrador = 0;
    if (isset($_POST['administrador']))
        $administrador = 1;
    $bleuSpecific['administrador'] = $administrador;

    $supervisor = 0;
    if (isset($_POST['supervisor']))
        $supervisor = 1;
    $bleuSpecific['supervisor'] = $supervisor;

    $miembro = 0;
    if (isset($_POST['miembro']))
        $miembro = 1;
    $bleuSpecific['miembro'] = $miembro;

    $invitado = 0;
    if (isset($_POST['invitado']))
        $invitado = 1;
    $bleuSpecific['invitado'] = $invitado;

    $cajero = 0;
    if (isset($_POST['cajero']))
        $cajero = 1;
    $bleuSpecific['cajero'] = $cajero;

    if (isset($_POST['porc_acreditacion_puntos']))
        $bleuSpecific['porc_acreditacion_puntos'] = $_POST['porc_acreditacion_puntos'];
    if (isset($_POST['max_invitados']))
        $bleuSpecific['max_invitados'] = $_POST['max_invitados'];
    if (isset($_POST['inactivo_bleu']))
        $bleuSpecific['inactivo_bleu'] = $_POST['inactivo_bleu'];

    if (isset($_POST['accion']))
        $bleuSpecific['accion'] = $_POST['accion'];
    
    if (isset($_POST['tipoListado']))
        $tipoListado = $_POST['tipoListado'];    
    return $bleuSpecific;
}

//GUARDAR
function guardar($bleuSpecific_peticion) {
    global $MEMBRESIA_BLEU_ID;
    if ($bleuSpecific_peticion['administrador'] || $bleuSpecific_peticion['supervisor'] ||
            $bleuSpecific_peticion['invitado'] || $bleuSpecific_peticion['miembro'] ||
            $bleuSpecific_peticion['cajero']) {

        if (!$bleuSpecific_peticion['id']) {
            $bleuSpecificQuery = "INSERT INTO bleu_specifics ( persona_id, administrador, supervisor, miembro,
                                            invitado, cajero, porc_acreditacion_puntos, max_invitados, inactivo) VALUES
                                            ( " . $bleuSpecific_peticion['persona_id'] . " , 
                                              " . $bleuSpecific_peticion['administrador'] . ", 
                                              " . $bleuSpecific_peticion['supervisor'] . ", 
                                              " . $bleuSpecific_peticion['miembro'] . ", 
                                              " . $bleuSpecific_peticion['invitado'] . ", 
                                              " . $bleuSpecific_peticion['cajero'] . ", 
                                              '" . $bleuSpecific_peticion['porc_acreditacion_puntos'] . "', 
                                              '" . $bleuSpecific_peticion['max_invitados'] . "', 
                                              " . $bleuSpecific_peticion['inactivo_bleu'] . ");";
        } else {
            $bleuSpecificQuery = "UPDATE bleu_specifics SET 
                                    persona_id=" . $bleuSpecific_peticion['persona_id'] . ", 
                                    administrador=" . $bleuSpecific_peticion['administrador'] . ", 
                                    supervisor=" . $bleuSpecific_peticion['supervisor'] . ", 
                                    miembro=" . $bleuSpecific_peticion['miembro'] . ", 
                                    invitado=" . $bleuSpecific_peticion['invitado'] . ", 
                                    cajero=" . $bleuSpecific_peticion['cajero'] . ", 
                                    porc_acreditacion_puntos=" . $bleuSpecific_peticion['porc_acreditacion_puntos'] . ",  
                                    max_invitados=" . $bleuSpecific_peticion['max_invitados'] . ", 
                                    inactivo=" . $bleuSpecific_peticion['inactivo_bleu'] . " 
                                 WHERE id = " . $bleuSpecific_peticion['id'] . "  LIMIT 1;";
        }
        if (ejecutar($bleuSpecificQuery)) {
            if (strlen($bleuSpecific_peticion['bleu_codigo']) > 0) {
                if (!$bleuSpecific_peticion['bleu_codigo_id']) {
                    $codigoQuery = "INSERT INTO codigos ( persona_id, membresia_id, codigo) VALUES
                                        ( " .$bleuSpecific_peticion['persona_id'].", $MEMBRESIA_BLEU_ID, "
                                        ."'".$bleuSpecific_peticion['bleu_codigo'] . "');";
                } else {
                    $codigoQuery = "UPDATE codigos SET codigo='" . $bleuSpecific_peticion['bleu_codigo'] . "' "
                                 . "WHERE id = " . $bleuSpecific_peticion['bleu_codigo_id'] . " "
                                 . "AND membresia_id = $MEMBRESIA_BLEU_ID LIMIT 1;";
                }
                ejecutar($codigoQuery);
            }
            listar();
        } else {
            die("Error: No se pudo Guardar el Registro!");
        }
    } else {
        die("Error: Seleccione por lo menos un Rol");
    }
}

//ELIMINAR
function eliminar($id) {
    $query = "DELETE FROM bleu_specifics WHERE id='$id' LIMIT 1;";
    if (ejecutar($query)) {
        listar();
    } else {
        die("#No se pudo Eliminar el Registro");
    }
}

//LISTADO
function listar() {
    global $tipoListado;
    $consulta = "SELECT p.id AS persona_id, IFNULL(bs.id,0) AS id,  p.documento AS documento, 
                        p.apenom as apenom, IFNULL(bs.puntos,0) AS puntos, 
                        IFNULL(bs.miembro,0) AS miembro, IFNULL(bs.invitado,0) AS invitado, c.codigo AS codigo 
                    FROM personas AS p 
                    LEFT JOIN bleu_specifics AS bs ON p.id = bs.persona_id 
                    LEFT JOIN codigos AS c ON p.id = c.persona_id";
    
    if($tipoListado === "BLEU") {
        $consulta .= " WHERE bs.id IS NOT NULL";
    } else if($tipoListado === "NOBLEU") {
        $consulta .= " WHERE bs.id IS NULL";
    }   
    $bleuSpecifics = consultar($consulta);
    require_once '../view/bleu/ListBleuSpecifics.php';
}


function editar($id) {
    global $MEMBRESIA_BLEU_ID, $tipoListado;
    $query = "Select * from personas where id = $id";
    $persona = consultar($query);
    $queryBleuSpecifics = "Select * from bleu_specifics where persona_id = $id";
    $bleuSpecifics = consultar($queryBleuSpecifics);
    $queryCodigoBleu = "Select * from codigos where membresia_id = $MEMBRESIA_BLEU_ID and persona_id = $id LIMIT 1";
    $codigoBleu = consultar($queryCodigoBleu);
    require_once '../view/bleu/FormBleuSpecific.php';
}

accion_controller();
?>
